package treeset;

public class Person implements Comparable<Person>{
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    /**
     * 如果只使用年龄比较,可能出现
     *   两个人姓名不同,但年龄相同 compareTo方法返回0
     *   导致另外一人无法存入TreeSet,与现实业务违背
     * @return
     */
   /* @Override
    public int compareTo(Person o) {
        return this.age - o.age;
    }*/

    /**
     * 先按照年龄比较,如果年龄相同,再按照姓名比较
     * 年龄:主要比较条件
     * 姓名:次要比较条件 姓名对于英文字符来说默认按照字典顺序排序,如果是中文字符
     *     按照unicode码表比较,在码表前面的字符认为小字符,在码表后面的就认为大字符
     *
     * @return
     */
    @Override
    public int compareTo(Person o){
        return this.age == o.age ? this.name.compareTo(o.name) : this.age - o.age;
    }
}
